/* 引入模拟数据 */
import other from "./data/other";
import goods from "./data/goods";
import classfy from './data/classify.data.js';
import cart from './data/cart-goods.js';
import orders from './data/orders.js';


/* 封装请求轮播图的函数 */
/* sort参数：排序方式 */
export function apiBanner(sort){
	// promise异步编程
	return new Promise( (resolve , reject)=>{
		// 定时器只是模仿请求的延迟
		setTimeout( function(){
			try{
				let list =[];	//接受请求结果
				// 根据sort传递过来的关键字确认排序方式
				switch(sort){
					case 'asc':
						list = [...other[0].list];
					break;
					case 'desc':
						list =other[0].list.reverse();
					break;
				}
				/* 请求数据后的操作 */
				resolve(list);//请求最终的数据
			}catch(e){
				reject(e);//操作失败
			}
		},1000 )
	})
}
/* 封装请求选项卡标题的函数 */
export function apiIndexTabs(){
	// promise异步编程
	return new Promise( (resolve , reject)=>{
		// 定时器只是模仿请求的延迟
		setTimeout( function(){
			try{
				let list =other[1].list;	//接受请求结果
				/* 请求数据后的操作 */
				resolve(list);//请求最终的数据
			}catch(e){
				reject(e);//操作失败
			}
		},1000 )
	})
}

/* 封装请求分类导航的数据*/
/* 
 p：获取当前页码
 num：每页条数
 tabname：选项卡关键字
 
 */
export function apiGoods( p , num , tabname ){
	// promise异步编程
	return new Promise( (resolve , reject)=>{
		// 定时器只是模仿请求的延迟
		setTimeout( ()=>{
			try{
				let list =[] , result=[];	//接受请求结果
				switch(tabname){
					case '全部':
						list = [...goods];
					break;
					// 所有关键词都执行相同的逻辑
					default :
						let arr =tabname.split('');
						// 遍历商品
						goods.forEach((item)=>{
						// 只要商品名称中匹配上关键字的任意一个那么都将结果传递出去
						for(let val of arr){
							if(item.goodName.indexOf(val) !=-1){
								list.push(item);
								// 终止当前关键词继续
								break;
							}
						}
					})
				}
				// 计算出总数
				let sumPages =Math.ceil( list.length / num );
				// 判断当前页码是否小于等于总页数：成立了才能截取数组
				if( p <= sumPages ){
					for(let i=(p-1)*num ; i<p*num ; i++){
						// 当i等于查询后的数据长度，断掉循环
						if(i == list.length) break;
						// 否则将当前循环的元素添加到result传递
						result.push(list[i]);
					}
				}
				
				/* 请求数据后的操作 */
				resolve(result);//请求最终的数据
			}catch(e){
				reject(e);//操作失败
			}
		},1000 )
	})
}

/* 封装商品详情页 */
export function apiDetail(id){
	return new Promise( (resolve , reject)=>{
		setTimeout(()=>{
			try{
				let list ={};	//接受请求结果
				list =goods.find(item => item.id == id)
				/* 请求数据后的操作 */
				resolve(list);//请求最终的数据
			}catch(e){
				reject(e);//操作失败
			}
		},1000)
	} )
}

/* 封装分类页面函数 */
export function apiClassfy(){
	// promise异步编程
	return new Promise( (resolve , reject)=>{
		// 定时器只是模仿请求的延迟
		setTimeout( ()=>{
			try{
				let list =[];	//接受请求结果
				list=[...classfy];
					/* 请求数据后的操作 */
					resolve(list);//请求最终的数据
			}catch(e){
				reject(e);//操作失败
			}
		},1000 )
	})
}

/* 封装购物车数据函数 */
export function apiCart(){
	return new Promise( (resolve,reject)=>{
		setTimeout(()=>{
			try{
				let list =[];
				list=[...cart];
				resolve(list);//请求最终的数据
			}catch(e){
				reject(e);//操作失败
			}
		},1000)
	} )
}

/* 封装订单数据函数 */
export function apiOrders(tabname){
	return new Promise( (resolve,reject)=>{
		setTimeout(()=>{
			try{
				let list =[];
				switch(tabname){
					case '全部':
						list =[...orders];
					break;
					// 所有关键词都执行相同的逻辑
					default :
						// 遍历商品
						orders.forEach((item)=>{
						// 只要商品名称中匹配上关键字的任意一个那么都将结果传递出去
						if(item.deal.trim()==tabname.trim()){
							list.push(item)
						}
					})
				}
				resolve(list);//请求最终的数据
			}catch(e){
				reject(e);//操作失败
			}
		},800)
	} )
}

/* 支付成功添加到我的订单 */
export function addOrder(obj){
	return new Promise( (resolve,reject)=>{
		setTimeout(()=>{
			try{
				let list =[];
				orders.push(obj)
				console.log(orders);
				resolve(obj);
			}catch(e){
				reject(e);
			}
		},800)
	} )
}

